package com.coded2.mobileposto.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

import com.coded2.infra.comum.UtilBean;
import com.coded2.mobileposto.model.Fabricante;
import com.coded2.mobileposto.service.ManterFabricanteService;


@Named
@SessionScoped
public class ManterFabricanteBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 786893373290359501L;
	
	@Inject
	private ManterFabricanteService service;
	
	private Fabricante montadora;
	
	private List<Fabricante> montadoras;
	
	public String list() throws Exception{
		setMontadora(null);
		setMontadoras(null);
		
		setMontadoras(service.search(getMontadora()));
		
		return "/view/manterFabricante/list.xhtml"; 
	}
	
	public String create(){
		setMontadora(null);
		setMontadoras(null);
		
		return "/view/manterFabricante/create.xhtml";
	}
	
	public String save(){
		List<String> erros = service.save(getMontadora());
		if (erros!=null && !erros.isEmpty()){
			for (String erro:erros){
				UtilBean.addErrorMessage(erro);
				}
			return UtilBean.ACTION_CREATE;
		}
		UtilBean.addInfoMessage("Registro gravado com sucesso");
		return UtilBean.ACTION_EDIT;
	}
	
	public String update(){
		List<String> erros = service.update(getMontadora());
		
		if (erros!=null && !erros.isEmpty()){
			for (String erro:erros){
				UtilBean.addErrorMessage(erro);
				}
		}
		UtilBean.addInfoMessage("Registro alterado com sucesso");
		
		return UtilBean.ACTION_EDIT;
	}

	public String remove(){
		List<String> erros = service.remove(getMontadora());
		return UtilBean.ACTION_LIST;
	}
	
	public String edit() throws Exception{
		setMontadora(service.searchByID(montadora));
		
		return UtilBean.ACTION_EDIT;
	}
	
	public Fabricante getMontadora() {
		if(this.montadora==null){
			montadora = new Fabricante();
		}
		return montadora;
	}

	public void setMontadora(Fabricante montadora) {
		this.montadora = montadora;
	}

	public List<Fabricante> getMontadoras() {
		if(this.montadoras==null){
			montadoras = new ArrayList<Fabricante>();
		}
		return montadoras;
	}

	public void setMontadoras(List<Fabricante> montadoras) {
		this.montadoras = montadoras;
	}
}